(function($){
	$.__tabset_iframeHeigthAuto__ = function(ifr) {
		// doc.onclick=function(){
		// ifr.style.height=(document.all?doc.body.scrollHeight:doc.body.offsetHeight)+'px';
		// ifr.style.height=doc.body.firstChild.offsetHeight;//有根节点可以使用根节点，兼容性比较好，opera，safari，google的浏览器都可以兼容，如果使用body.offsetHeight只在ff下有效果
		// ifr.style.height=doc.body.scrollHeight;
		// console.log("onload:"+ifr.style.height);
		// }
		var $doc = $(ifr.contentWindow.document);
		var windowHeight = $doc.outerHeight();
		if ($doc.find("div:first").length > 0) {
			$(ifr).height(windowHeight);
			$(ifr).closest(".tab-content").prev().find("a[href='#" + ifr.name + "'] .loading").hide();
		}
	}
	$.__tabset_tabclose__ = function(node){
		var contentId = $(node).closest("a").attr("href");
		$(contentId).remove();
		var $tab = $(node).closest("li");
		var $near = $tab.prev();
		if($near.length==0){
			$near = $tab.next();
		}
		if($near.length!=0){
			$near.find("a").tab("show");
		}
		$tab.remove();
	}
	
	var __opt__ = {};

	var tmp_tabList = '<ul class="nav nav-tabs" role="tablist"></ul>';
	var tmp_contentList = '<div class="tab-content"></div>';
	
	var tmp_tab = '<li role="presentation" >'
			    +'<a href="#" aria-controls="" role="tab" data-toggle="tab">'
			    +'<span class="tab_title"></span>'
			    +'<span class="loading fa fa-spinner fa-pulse fa-fw margin-bottom"></span>'
			    +'<span onclick="$.__tabset_tabclose__(this)" style="position:relative;left:6px;top:-3px" class="glyphicon glyphicon-remove"></span>'
			    +'</a>'
			    +'</li>';
			    
	var tmp_content = '<div role="tabpanel" class="tab-pane" id="">'
					+'<iframe name="" onload="$.__tabset_iframeHeigthAuto__(this)" style="border-width:0" width="100%" scrolling="no" ></iframe>'
					+'</div>';
	$.fn.tabset = function(cmd,arg0,arg1,arg2){
		if(typeof cmd =="string"){
			/**
			src 地址
			title 标题
			id id号
			opener_id 开启着
			*/
			if(cmd=='add'){
				var src;
				var title;
				var id;
				var opener_id;
				if($.isPlainObject(arg0)){
					src = arg0.src;
					title = arg0.title;
					id = arg0.id;
					opener_id = arg0.openerId;
				}
				if($.isEmptyObject(src)){
					alert("地址不能为空");
					return;
				}
				if($.isEmptyObject(title)){
					alert("标题不能为空");
					return;
				}
				if($.isEmptyObject(id)){
					id = "tab"+(Math.random()+"").replace(".","");
				}
				if($.isEmptyObject(opener_id)){
					opener_id=null;
				}
				if($(this).find("#"+id).length>0){
					$(this).tabset("show",id);
				}else{
					var $tmp_tab = $(tmp_tab);
					$tmp_tab.find("a").attr("href","#"+id)
						.bind("shown.bs.tab",function (e) {
							var contentId = $(this).closest("a").attr("href");
							var $iframe = $(contentId).find("iframe");
							var src = $iframe.attr("src");
							if(src==null || src==""){
								$iframe.attr("src",$iframe.data("src"));
							}else{
								$iframe.get(0).style.height = $iframe.get(0).contentWindow.document.body.scrollHeight;
							}
							__opt__.onShownBsTab && __opt__.onShownBsTab(e,id);
						});
					$tmp_tab.find(".tab_title").text(title);
					
					var $tmp_content = $(tmp_content).attr("id",id);
					$tmp_content.find("iframe").attr("name",id).data("src",src).data("opener_id",opener_id);
					$(this).find(".nav-tabs").append($tmp_tab);
					$(this).find(".tab-content").append($tmp_content);
				}
				return id;
			}else if(cmd=='show'){
				var id = arg0;
				$(this).find("a[href='#"+id+"']").tab("show");
			}else if(cmd=='addShow'){
				var id = $(this).tabset("add",arg0,arg1);
				$(this).tabset("show",id);
			}else if(cmd=='getTab'){
				var id = arg0;
				var $tab = $(this).find("a[href='#"+id+"']").tab("show");
				if($tab.length==0){
					return null;
				}else{
					return $tab;
				}
			}else if(cmd=='getWindow'){
				var id = arg0;
				var $iframe = $(this).find("[name='"+id+"']");
				if($iframe.length==0){
					return null;
				}else{
					return $iframe.get(0).contentWindow;
				}
			}else if(cmd=='getOpenerWindow'){
				var id = arg0;
				var opener_id = $(this).find("[name='"+id+"']").data("opener_id");
				if(opener_id==null || opener_id==""){
					return null;
				}else{
					return $(this).tabset("getWindow",opener_id);
				}
			}else if(cmd=='close'){
				var id=arg0;
				var contentId = $("#"+id);
				$(contentId).remove();
				var $tab = $(this).find("li:has(a[href='#"+id+"'])");
				var $near = $tab.prev();
				if($near.length==0){
					$near = $tab.next();
				}
				if($near.length!=0){
					$near.find("a").tab("show");
				}
				$tab.remove();
			}
		}else if(cmd==null || $.isPlainObject(cmd)){
			if($(this).attr("__tabset_init__")==null){
				$(this).attr("__tabset_init__",true);
				$(this).append($(tmp_tabList)).append($(tmp_contentList));
				$.extend(__opt__,cmd);
			}
		}
	}
})(jQuery)
